package com.huashi.dealer.modular.business.cart.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huashi.dealer.commonEntity.Cart;
import com.huashi.dealer.modular.business.cart.param.CartRequestParam;
import com.huashi.dealer.modular.business.cart.param.CartResponseParam;

/**
 * API购物车Service接口
 *
 * @author 谭陈强
 * @since 2025-07-30
 */
public interface CartService extends IService<Cart> {

    /**
     * 加入购物车
     *
     * @param requestParam 请求参数
     * @return 购物车信息
     */
    CartResponseParam addToCart(CartRequestParam requestParam);

    /**
     * 获取购物车列表
     *
     * @param isGoodsType 分类类型：10普通订单，30返利订单，40核销订单
     * @return 购物车列表
     */
    CartResponseParam getCartList(Integer isGoodsType);

    /**
     * 删除购物车商品
     *
     * @param goodsSkuId 商品SKU ID
     * @param isGoodsType 分类类型：10普通订单，30返利订单，40核销订单
     */
    void deleteCartItem(String goodsSkuId, Integer isGoodsType);

    /**
     * 减少购物车商品数量
     *
     * @param goodsSkuId 商品SKU ID
     * @param goodsId 商品ID
     * @param goodsNum 减少的数量（默认为1）
     * @param isGoodsType 分类类型：10普通订单，30返利订单，40核销订单
     */
    void reduceCartItem( String goodsSkuId, String goodsId, Integer goodsNum, Integer isGoodsType);

    /**
     * 清空购物车
     *
     * @param token 用户令牌
     * @param isGoodsType 分类类型：10普通订单，30返利订单，40核销订单
     */
    void clearCart(String token, Integer isGoodsType);

    /**
     * 更新购物车商品数量
     *
     * @param requestParam 请求参数
     * @return 购物车信息
     */
    CartResponseParam updateCartItem(CartRequestParam requestParam);

    /**
     * 获取购物车商品数量
     *
     * @param token 用户令牌
     * @param isGoodsType 分类类型：10普通订单，30返利订单，40核销订单
     * @return 购物车商品数量
     */
    CartResponseParam getCartCount(String token, Integer isGoodsType);
} 